In at least some circumstances, it may be deemed advisable and or necessary to restrict how a computer application executes on a computing device. For example, it may be that an application is distributed in a partially functioning version such as a trial version or a standard version and a fully functioning version such as a retail version or a professional version, where the partially functioning version is less expensive to acquire, but correspondingly does not contain all the features and capabilities of the fully functioning version. Similarly, it may be that an application as distributed should not be employed on a computer with an older operating system, or that a less expensive version of the application can only be used with an older operating system and a more expensive version of the application can be used with an older and a newer operating system. As may be seen, then, restrictions applied to the use of a computer application can be based on functional limitations incumbent in the application, marketing and/or distribution considerations, and the like.
In one specific instance, it may be the case that the application is a server application that can be employed on a computing device with one or more processors. Obviously, the server application will function more quickly and/or efficiently on a computing device with more processors as compared to a computing device with less processors, all other things being equal. In connection with such server application, then, it may be decided by the distributor and/or manufacturer thereof that, based on market considerations, it would be advisable to sell a ‘full’ version of the server application that can use all available processors on a computing device, and also to sell a ‘limited’ version of the server application that can only use one or some of the available processors on the computing device. Likely, the full version would be employed by a relatively more heavy-duty user and thus would have a relatively high price, while the limited version would be employed by a relatively less heavy-duty user and thus would have a relatively low price. Such an arrangement is typical, especially where the application is attempting to satisfy both a low-end and a high-end of a market.
The distributor/manufacturer might attempt to enforce the processor limitation on the limited version of the application by way of an end user license agreement or other equivalent extraction of a promise from the user. Of course, such a promise is easily made and easily broken, and therefore has no real and effective enforcement mechanism.
Accordingly, the distributor/manufacturer might in addition or in the alternative attempt to enforce the processor limitation on the limited version of the application by restricting the application from being installed on a computing device with more than a maximum number of processors. Implementing such a restriction is known or should be apparent to the relevant public and therefore need not be set forth herein in any detail. However, and significantly, implementing such a restriction is not advisable, especially inasmuch as such a restriction is unduly harsh in that such restriction may unnecessarily require the user to purchase an additional computing device solely to satisfy the restriction. Similarly, it may be the case that a user only has a computing device with more than the maximum number of processors. At any rate, such a restriction can be overcome by installing more processors after installing the application, and therefore is not very effective against a nefarious entity intent on beating same.
Accordingly, in the case where a particular use of a computer application is to be restricted on a computing device, a need exists for a method and mechanism that imposes such restriction in a reasonable manner without being unduly harsh. More particularly, a need exists for a method and mechanism that imposes such restriction by way of restricting a thread executing on the computing device and corresponding to the application. Even more particularly, a need exists for a method and mechanism that restricts use of the application to one or more particular processors on the computing device. Such method and mechanism would allow a distributor/manufacturer of an application to enforce the restriction even on a computing device that otherwise fails to satisfy such restriction.